package com.study.java.classloader;

import org.junit.Test;

/**
* @Name: ClassLoaderTest02
* @Description: 类加载器测试02
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-2-9 下午2:37:58 
* @Version: V1.0
 */
public class ClassLoaderTest02 {
	
	/**
	* @Name: test01
	* @Description: 类加载器的层次结构：树状结构
	* 	引导类加载器->扩展类加载器->应用程序类加载器->自定义类加载器
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-2-9 下午2:43:47
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void test01() {
		//应用程序类加载器路径
		System.out.println(System.getProperty("java.class.path"));
		//应用程序类加载器对象
		System.out.println(ClassLoader.getSystemClassLoader());
		//扩展类加载器对象
		System.out.println(ClassLoader.getSystemClassLoader().getParent());
		//引导类加载器对象：由C++原生代码实现，这里获取不到
		System.out.println(ClassLoader.getSystemClassLoader().getParent().getParent());
	}
	
	/**
	* @Name: test02
	* @Description: 类加载器的代理机制：双亲委派机制
	* 双亲委派代理机制：
	* 	先交给父类加载，父类加载不了时，再由自己进行加载
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-2-9 下午3:00:30
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void test02() {
		String str = "aaa" ;
		//交给父类加载器加载，此处交给引导类加载器加载
		System.out.println(str.getClass().getClassLoader());
		System.out.println(str);
	}
	

}














